package br.com.sig.cadastro.cliente.presentation.action;

import javax.annotation.PostConstruct;
import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.sig.cadastro.cliente.business.model.bo.ClienteBO;
import br.com.sig.cadastro.cliente.business.model.entity.Cliente;
import br.com.sig.cadastro.pessoas.business.model.entity.Pessoa;
import br.com.sig.cadastro.pessoas.business.model.entity.PessoaFisica;
import br.com.sig.cadastro.pessoas.business.model.entity.PessoaJuridica;
import br.com.sig.cadastro.pessoas.business.model.enumeration.TipoPessoa;
import br.com.sig.presentation.action.BaseListAction;

@Named
@ViewScoped
public class ClienteList extends BaseListAction<Cliente> {

	private static final long serialVersionUID = -7189791537691700493L;
	
	private TipoPessoa tipoPessoa;
	
	@Inject
	private ClienteBO clienteBO;

	@PostConstruct
	public void init() {
		setService(clienteBO);
	}
	
	@Override
	protected Cliente createInstance() {
		Cliente cliente = super.createInstance();
		cliente.setPessoa(new Pessoa());
		return cliente;
	}
	
	public TipoPessoa getTipoPessoa() {
		return tipoPessoa;
	}

	public void setTipoPessoa(TipoPessoa tipoPessoa) {
		this.tipoPessoa = tipoPessoa;
		
		if (this.tipoPessoa != null) {
			if (TipoPessoa.FISICA.equals(getTipoPessoa())) {
				getInstance().setPessoa(new PessoaFisica());
			} else {
				getInstance().setPessoa(new PessoaJuridica());
			}
		} else {
			getInstance().setPessoa(new Pessoa());
		}
	}	
}